package com.suning.sawp.intf.bi;

import java.util.List;

import com.suning.sawp.dto.bi.BiStoreCateSaleDetailDto;
import com.suning.sawp.dto.bi.BiStoreJxcInfo;
import com.suning.sawp.dto.bi.BiStoreSaleBrandAvgPricedDto;
import com.suning.sawp.dto.bi.BiStoreSaleCateAvgPricedDto;
import com.suning.sawp.dto.bi.BiStoreSaleCompletaRateRankingDto;
import com.suning.sawp.dto.bi.BiStoreSaleCompleteRateDto;
import com.suning.sawp.dto.bi.BiStoreSaleCustAvgPricedDto;
import com.suning.sawp.dto.bi.BiStoreSaleDetailDto;
import com.suning.sawp.dto.bi.BiStoreSaleDto;
import com.suning.sawp.dto.bi.BiStoreYbCateInfo;
import com.suning.sawp.dto.bi.BiStoreYbDetailDto;
import com.suning.sawp.dto.bi.CmmdtyAvgPriceDto;
import com.suning.sawp.dto.bi.CmmdtySaleDetailDto;
import com.suning.sawp.dto.bi.CmmdtySaleDetailsDto;
import com.suning.sawp.dto.bi.TopCateDto;
import com.suning.sawp.dto.bi.sale.SaleCategory;
import com.suning.sawp.dto.common.ReturnMsg;
import com.suning.sawp.dto.mainpush.StoreManDto;
import com.suning.sawp.dto.storeman.Category;

/**
 * BI准实时数据服务接口 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface BiStoreDateService {

    /**
     * 查询店长日销售数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleDto queryKeeperDataByDay(String staffId, String storeCode);

    /**
     * 查询店长月销售数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleDto queryKeeperDataByMonth(String storeCode);

    /**
     * 查询门店日销售详情 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param month
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreSaleDetailDto> queryStoreSaleDetailByDay(String storeCode, String month);

    /**
     * 查询门店月销售详情 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param year
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreSaleDetailDto> queryStoreSaleDetailByMonth(String storeCode, String year);

    /**
     * 品类日维度销售排行 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param day
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreCateSaleDetailDto> queryStoreCateSaleAmountDay(String storeCode, String day);

    /**
     * 品类日维度销量排行 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param day
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreCateSaleDetailDto> queryStoreCateSaleVolumeDay(String storeCode, String day);

    /**
     * 品类月销售额排行 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param month
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreCateSaleDetailDto> queryStoreCateSaleAmountMonth(String storeCode, String month);

    /**
     * 品类月销量排行 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param month
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreCateSaleDetailDto> queryStoreCateSaleVolumeMonth(String storeCode, String month);

    /**
     * 查询品类日销售详情 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @param month
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreSaleDetailDto> queryCateSaleDetailByDay(String storeCode, String cateCode, String month);

    /**
     * 查询品类月销售详情 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @param year
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreSaleDetailDto> queryCateSaleDetailByMonth(String storeCode, String cateCode, String year);

    /**
     * 门店月份完成率 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param month
     * @param storeCode
     * @param storeName
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCompleteRateDto queryStoreCompleteRate(String month, String storeCode, String storeName);

    /**
     * 查询同大区销售完成率排行 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param month
     * @param regionCode
     * @param storeCode
     * @param storeName
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCompletaRateRankingDto queryStoreCompleteRateRanking(String month, String regionCode, String storeCode,
            String storeName);

    /**
     * 转换品类数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param cates
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<SaleCategory> getCategory(List<Category> cates, String cateCode);

    /**
     * 
     * 功能描述: 日维度店长查询门店以及品类平均客单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param day
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCustAvgPricedDto queryCustAvgPriceByDay(StoreManDto storeManDto, String day);

    /**
     * 
     * 功能描述: 月维度店长查询门店以及品类平均客单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param day
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCustAvgPricedDto queryCustAvgPriceByMonth(StoreManDto storeManDto, String month);

    /**
     * 
     * 功能描述: 日维度查询门店品牌平均单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param cateCode
     * @param date
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleBrandAvgPricedDto queryBrandCommAvgPriceByDay(StoreManDto storeManDto, String cateCode, String date);

    /**
     * 
     * 功能描述: 日维度查询门店品类平均单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param date
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCateAvgPricedDto queryCateCommAvgPriceByDay(StoreManDto storeManDto, String date);

    /**
     * 
     * 功能描述: 月维度查询门店品类平均单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param month
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BiStoreSaleCateAvgPricedDto queryCateCommAvgPriceByMonth(StoreManDto storeManDto, String month);
	
	BiStoreYbDetailDto queryYbCateByDay(String storeCode, String date);

    BiStoreYbDetailDto queryYbCateByMonth(String storeCode, String month);

    BiStoreYbCateInfo queryYbStaffByDay(StoreManDto storeManDto, String month, String cateCode);

    BiStoreYbCateInfo queryYbStaffByMonth(StoreManDto storeManDto, String month, String cateCode);

    BiStoreJxcInfo queryCateJxcByDate(String storeCode, String date);

    BiStoreJxcInfo queryCateJxcByMonth(String storeCode, String month);

    /**
     * 
     * 功能描述: 查询单品详情<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param cmmdtyCode
     * @param date 日查询YYYY-MM-DD，月查询YYYY-MM
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    CmmdtySaleDetailDto queryCmmdtySaleDetail(StoreManDto storeManDto, String cmmdtyCode, String date);

    /**
     * 
     * 功能描述: 日月维度单品销售列表<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param cateCode 督导身份，品类为必填项；店长为非必填
     * @param brandCode
     * @param cmmdtyCode
     * @param date 日查询YYYY-MM-DD，月查询YYYY-MM
     * @param sortType
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CmmdtySaleDetailsDto> queryStoreCmmdtySaleDetails(StoreManDto storeManDto, String cateCode, String brandCode, String cmmdtyCode,
            String date, String sortType, Integer pageNo, Integer pageSize);

    /**
     * 
     * 功能描述: 查询topN品牌列表<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param cateCode 日期格式YYYY-MM-DD、YYYY-MM
     * @param date
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<TopCateDto>> queryTopNBrandList(StoreManDto storeManDto, String cateCode, String date);

    /**
     * 
     * 功能描述: 查询单品平均单价<br>
     * 〈功能详细描述〉
     *
     * @param storeManDto
     * @param brandCode
     * @param date 日查询YYYY-MM-DD，月查询YYYY-MM
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CmmdtyAvgPriceDto> queryCmmdtyAvgPrice(StoreManDto storeManDto, String brandCode, String date, Integer pageSize, Integer pageNo);

}
